package model;

/**
 * @ClassName: SingletonSyn
 * @Author: liugui
 * @Date: 2020-04-08 22:35
 **/
public class SingletonSyn {

    private static SingletonSyn instance;

    //同步锁单例模式
    //解决线程安全的2种方法
    //1.在方法中添加关键字 synchronized 实现线程安全
    //2.在synchronized代码块中包装 if ( instance == null ) 条件
    //缺点：存在延迟
    //代码同一时刻只能被一个线程执行
    //如果实例已创建 任何实例都可以使用非同步方式获取该实例

    //添加关键字 synchronized 实现线程安全
    public static synchronized SingletonSyn getInstance() {
        //在synchronized代码块中包装 if ( instance == null ) 条件
        synchronized (SingletonSyn.class){
            if (instance == null) {
                instance = new SingletonSyn();
            }
        }
        return instance;
    }


}
